561fae1705ab016de309a41f50f06ffda70d8dd9,src/main/java/cn/edu/buaa/crypto/encryption/ibbe/del07/generators/IBBEDel07KeyPairGenerator.java,IBBEDel07KeyPairGenerator,generateKeyPair,#,27

Before Change


    }

    public AsymmetricCipherKeyPair generateKeyPair() {
        PropertiesParameters parameters = PairingUtils.GenerateTypeAParameters(this.parameters.getRBitLength(), this.parameters.getQBitLength());
        Pairing pairing = PairingFactory.getPairing(parameters);
        Element[] hs = new Element[this.parameters.getMaxBroadcastReceiver() + 1];
        hs[0] = pairing.getG2().newRandomElement().getImmutable();

After Change


    }

    public AsymmetricKeySerPair generateKeyPair() {
        Pairing pairing = PairingFactory.getPairing(this.parameters.getPairingParameters());
        Element[] hs = new Element[this.parameters.getMaxBroadcastReceiver() + 1];
        hs[0] = pairing.getG2().newRandomElement().getImmutable();
        Element g = pairing.getG1().newRandomElement().getImmutable();
        Element gamma = pairing.getZr().newRandomElement().getImmutable();
        Element w = g.powZn(gamma).getImmutable();
        Element v = pairing.pairing(g, hs[0]).getImmutable();
        Element gammaToi = pairing.getZr().newOneElement();

        for (int i = 1; i < hs.length; i++) {
            gammaToi = gammaToi.mulZn(gamma).getImmutable();
            hs[i] = hs[0].powZn(gammaToi).getImmutable();
        }

        return new AsymmetricKeySerPair(
                new IBBEDel07PublicKeySerParameter(this.parameters.getPairingParameters(), w, v, hs),
                new IBBEDel07MasterSecretKeySerParameter(this.parameters.getPairingParameters(), g, gamma));
    }
}